/**
 * 对公众平台发送给公众账号的消息加解密示例代码.
 * 
 * @copyright Copyright (c) 1998-2014 Tencent Inc.
 */

// ------------------------------------------------------------------------

package cn.shop.merchant.controller.api.aes;

import cn.hutool.crypto.digest.DigestUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * SHA1 class
 *
 * 计算公众平台的消息签名接口.
 */
@Slf4j
public class SHA1 {

	/**
	 * 用SHA1算法生成安全签名
	 * @param token 票据
	 * @param timestamp 时间戳
	 * @param nonce 随机字符串
	 * @param params 参数
	 * @return 安全签名
	 */
	public static String getSHA1(String token, String timestamp, String nonce, String... params) {
		List<String> list = new ArrayList<>(Arrays.asList(params));
		list.addAll(Arrays.asList(token, timestamp, nonce));
		// 字符串排序
		Collections.sort(list);
		return DigestUtil.sha1Hex(String.join("", list));
	}
}
